<?php
//生成批量修改的语句，支持根据不同情况，更新不同的值。
//
//UPDATE categories
//SET dingdan = CASE id
//        WHEN 1 THEN 3
//        WHEN 2 THEN 4
//        WHEN 3 THEN 5
//    END,
//    title = CASE id
//        WHEN 1 THEN 'New Title 1'
//        WHEN 2 THEN 'New Title 2'
//        WHEN 3 THEN 'New Title 3'
//    END
//WHERE id IN (1,2,3)




//$p['table']=$table;
//$p['update_item_name']        ="openid";//需要更新的项
//$p['update_item_new_value']   =array("1","2","3");要更新的项目的新值

//$p['update_item_case_name']   ="cid";判断语句中，以哪个项作为基准
//$p['update_item_case_value']   =array("1","2","3");//基准项的值

//$p['condition_name']      = array("mid", "name", "include_gene");
//$p['condition_relation']  = array("=", ">", "<");
//$p['condition_value']     = array("'mid'", "'name'", "'include_gene'");
//$p['condition_condition'] = array("and", "and", "");
//$p['mode']="0";


//考虑到运算和数字对比。默认程序不加入单引号。请根据实际情况字符自动加入单引号。
//$p['condition_value']   = ["mid", "name", "include_gene"];


//$p['mode']="0";输入值则会返回过程


//本函数未能做到复杂的条件，只能做到 1 and 1 or 2  未在系统验证 1 or (2 and 3)。可以自行根据原理构建。


function update_datas_different_value($p)
{


    $sql_prefix="";
    $sql_suffix="";
    $sql_middle="";



//设置语句更新的表格,项和值
    $sql_prefix = "update ".$p['table']." SET ".$p['update_item_name']." = CASE ".$p['update_item_case_name'] ;



if(count($p['update_item_new_value'])!=count($p['update_item_case_value']))
{
    echo "update_item_new_value，update_item_case_value数量不对应";
}



for($i=0;$i<count($p['update_item_new_value']);$i++)
{
    $sql_middle .= " WHEN '".$p['update_item_case_value'][$i]."' THEN '".$p['update_item_new_value'][$i]."'";
}
$sql_middle .= "END";


//echo $sql_middle;





//设置要更新的条件

    for($i=0;$i<count($p['condition_name']);$i++)
    {

        $sql_suffix=$sql_suffix.$p['condition_name'][$i].' '.$p['condition_relation'][$i].$p['condition_value'][$i].' '.$p['condition_condition'][$i].' ';
    }


    if($sql_suffix){$sql_suffix=" where ".$sql_suffix;}
    else{$sql_suffix="";}





if($p['mode']=="1")
{
    echo $sqlstr=$sql_prefix.$sql_middle.$sql_suffix;
}

    return $sqlstr=$sql_prefix.$sql_middle.$sql_suffix;
}


